package com.zyf.workflow.node;

import com.zyf.workflow.node.bean.NodeResultBean;

/**
 * Node 作为Work的执行单元统一接口，节点只是当前节点数据的载体，不包含任何逻辑，其逻辑的实现，是通过worker来实现的
 *
 * @param <P> <code>doWork</code>的方法入参，通常由上一个Node的<code>doWork</code>返回值传入
 * @author zhangYF
 * @since 1.0
 */
public interface Node<P> {

    /**
     * 获取节点ID接口
     *
     * @return
     */
    int getNodeId();

    /**
     * 获取节点名称接口
     *
     * @return
     */
    String getName();

    /**
     * 节点类型，暂不使用，后续可以作为区分逻辑判断节点，还是逻辑执行节点的标识
     *
     * @return
     */
    String getType();

    /**
     * Node执行的方法，具体实现由Worker实现
     *
     * @param m
     * @return
     * @see com.zyf.workflow.worker.Worker
     */
    NodeResultBean doWork(P m);

}
